#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>
#include<sys/mman.h>
#include <linux/input.h>
struct input_event touch;

char p[][100]={"./1.bmp","./2.bmp","./3.bmp","./4.bmp"};
void fztp(int x)
{

	int lcd_fd=open("/dev/fb0",O_RDWR);
	int *lcd_p= mmap(NULL, 800*480*4,PROT_READ | PROT_WRITE, MAP_SHARED, lcd_fd, 0);
	if (lcd_fd)
	{
		perror("LCD打开");
	}
	int bmp_fd=open(p[x],O_RDWR);
	if (bmp_fd)
	{
		perror("图片打开");
	}
	char bmp1[54]={0};
	read(bmp_fd,bmp1,sizeof(bmp1));
	lseek(bmp_fd,54,SEEK_SET);
	char buf[800*480*3]={0};
	read(bmp_fd,buf,sizeof(buf));
	int ggt[800*480]={0};
	for(int f=0;f<800*480;f++)
	{
		ggt[f]=buf[3*f]<<0|buf[3*f+1]<<8|buf[3*f+2]<<16|0x00<<24;
		
	}
	int ggt2[800*480]={0};
	for(int y=0;y<480;y++)
	{
		for(int x=0;x<800;x++)
		{
			*(lcd_p+x+y*800)=ggt[x+(479-y)*800];
		}
		
	}
	close(bmp_fd);
	munmap(lcd_p,800*480*4);
	close(lcd_fd);
}
int main()
{
	//1.打开触摸屏文件（/dev/input/event0）
	int fd = open("/dev/input/event0",O_RDWR);
	if(fd == -1)
	{
		printf("打开文件失败\n");
		return -1;
	}
	
	int x=0;
	int y=0;
	int b=0;
	fztp(b);
	while(1)
	{
		fztp(b);
		//2.读取文件内容
		read(fd , &touch , sizeof(touch));
		//sizeof会自动测量结构体的字节数
	
		//3.筛选出需要的信息
		//判断是不是触摸屏
		if(touch.type == EV_ABS)//0x03
		{
			//判断是不是X
			if(touch.code == ABS_X)
			{
				x = touch.value*800/1024;
		
			}
		}
		
		if(touch.type == EV_ABS)//0x03
		{
			//判断是不是y
			if(touch.code == ABS_Y)
			{
				y = touch.value*480/600;
				
			}
		}
		
		//判断是不是按键事件
		if(touch.type == EV_KEY)
		{
			//判断是不是触摸事件
			if(touch.code == BTN_TOUCH)
			{
				if(touch.value == 0)
				{
					
					printf("(%d,%d)\n",x,y);
					if(x<400)
					{
						b=(b-1)%4;
						fztp(b);

					}else if(x>400)
					{
						if(x>400&&y<160)
					{
						for(int i=0;i<4;i++)
						{
							b=(b+1)%4;
							fztp(b);
							sleep(2);
						}
					}else{
						
						b=(b+1)%4;
						fztp(b);
					}
					}
				}
			}
		}		
	}
	
	//4.关闭文件
	close(fd);
	
	return 0;
}